/*
 * Copyright (c) 2025 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import 'package:flutter/material.dart';
import 'package:hadss_uni_input/hadss_uni_input.dart';

class RotateExample extends StatefulWidget {
  const RotateExample({super.key});

  @override
  RotateExampleState createState() => RotateExampleState();
}

class RotateExampleState extends State<RotateExample> {
  final double _scale = 1.0;
  double _rotation = 0.0;
  final Offset _offset = Offset.zero;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('旋转'),
        leading: IconButton(
          icon: const Icon(Icons.arrow_back),
          onPressed: () {
            Navigator.pop(context);
          },
        ),
      ),
      body: UnifiedGestureDetector(
        pointerOptions: const PointerOptions(
          enableRotate: true,
        ),
        onRotateStart: onRotateStart,
        onRotateUpdate: onRotateUpdate,
        onRotateEnd: onRotateEnd,
        onRotateCancel: onRotateCancel,
        child: Material(
          child: Center(
            child: Transform(
              alignment: Alignment.center,
              transform: Matrix4.identity()
                ..translate(_offset.dx, _offset.dy)
                ..rotateZ(_rotation)
                ..scale(_scale),
              child: Container(
                width: 200,
                height: 200,
                color: Colors.green,
                alignment: Alignment.center,
                child: const Text(
                  '旋转',
                  style: TextStyle(fontSize: 30),
                ),
              ),
            ),
          ),
        ),
      ),
    );
  }

  void onRotateStart(GestureEvent event) {}

  void onRotateUpdate(GestureEvent event) {
    setState(() {
      _rotation = event.angle!;
    });
  }

  void onRotateEnd(GestureEvent event) {}

  void onRotateCancel(GestureEvent event) {
    showDialog(
        context: context,
        builder: (BuildContext context) {
          return const AlertDialog(
            title: Text('旋转取消'),
          );
        });
  }
}
